package com.zqxx.examine.management.persistence;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.zqxx.examine.common.utils.Page;
import com.zqxx.examine.model.question.Field;
import com.zqxx.examine.model.question.KnowledgePoint;
import com.zqxx.examine.model.question.PointStatistic;
import com.zqxx.examine.model.question.Question;
import com.zqxx.examine.model.question.QuestionFilter;
import com.zqxx.examine.model.question.QuestionQueryResult;
import com.zqxx.examine.model.question.QuestionStatistic;
import com.zqxx.examine.model.question.QuestionStruts;
import com.zqxx.examine.model.question.QuestionTag;
import com.zqxx.examine.model.question.QuestionType;
import com.zqxx.examine.model.question.Tag;

public abstract interface QuestionMapper
{
  public abstract List<Question> getQuestionList(@Param("filter") QuestionFilter paramQuestionFilter, @Param("page") Page<Question> paramPage);
  
  public abstract List<Field> getAllField(@Param("page") Page<Field> paramPage);
  
  public abstract List<KnowledgePoint> getKnowledgePointByFieldId(@Param("fieldId") int paramInt, @Param("page") Page<KnowledgePoint> paramPage);
  
  public abstract List<QuestionType> getQuestionTypeList();
  
  public abstract List<Tag> getTagByUserId(@Param("userId") int paramInt, @Param("page") Page<Tag> paramPage);
  
  public abstract List<Tag> getTags(@Param("page") Page<Tag> paramPage);
  
  public abstract void addTag(Tag paramTag);
  
  public abstract void insertQuestion(Question paramQuestion)
    throws Exception;
  
  public abstract void addQuestionKnowledgePoint(@Param("questionId") int paramInt1, @Param("pointId") int paramInt2)
    throws Exception;
  
  public abstract void addField(Field paramField);
  
  public abstract void addKnowledgePoint(KnowledgePoint paramKnowledgePoint);
  
  public abstract List<QuestionTag> getQuestionTagByQuestionIdAndUserId(@Param("questionId") int paramInt1, @Param("userId") int paramInt2, @Param("page") Page<QuestionTag> paramPage);
  
  public abstract void addQuestionTag(@Param("array") List<QuestionTag> paramList);
  
  public abstract void deleteQuestionTag(@Param("questionId") int paramInt1, @Param("userId") int paramInt2, @Param("array") List<Integer> paramList);
  
  public abstract void deleteQuestionPointByQuestionId(@Param("questionId") int paramInt)
    throws Exception;
  
  public abstract void deleteFieldByIdList(@Param("array") List<Integer> paramList);
  
  public abstract void deleteKnowledgePointByIdList(@Param("array") List<Integer> paramList);
  
  public abstract void deleteTagByIdList(@Param("array") List<Integer> paramList);
  
  public abstract Question getQuestionByQuestionId(@Param("questionId") int paramInt);
  
  public abstract List<QuestionQueryResult> getQuestionAnalysisListByIdList(@Param("array") List<Integer> paramList);
  
  public abstract void deleteQuestionByQuestionId(@Param("questionId") int paramInt);
  
  public abstract List<Question> getQuestionByTypeId(@Param("QuestionTypeId") int paramInt, @Param("page") Page<Question> paramPage);
  
  public abstract List<QuestionStruts> getQuestionListByPointId(@Param("array") List<Integer> paramList);
  
  public abstract List<QuestionStatistic> getTypeQuestionStaticByFieldId(int paramInt);
  
  public abstract void updateQuestion(Question paramQuestion);
  
  public abstract List<KnowledgePoint> getQuestionPoint(int paramInt);
  
  public abstract List<Tag> getQuestionTags(int paramInt);
  
  public abstract List<PointStatistic> getPointCount(@Param("fieldId") int paramInt, @Param("page") Page<PointStatistic> paramPage);
}
